package cn.huaqingcheng.tianshu.core.sys.model;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.jetbrains.annotations.NotNull;

import java.net.URI;

/**
 * SysFileScheme
 */
@Getter
@RequiredArgsConstructor
public enum SysFileScheme {

    /**
     * 阿里云OSS
     */
    ALI_OSS("file-ali-oss"),

    /**
     * 本地文件
     */
    LOCAL_FILE("file-local"),

    ;

    /**
     * 自定义 Scheme
     */
    private final String value;

    public static @NotNull SysFileScheme of(String value) {
        for (SysFileScheme scheme : values()) {
            if (scheme.value.equals(value)) {
                return scheme;
            }
        }
        throw new IllegalArgumentException(value);
    }

    /**
     * 生成自定义方案的URL
     *
     * @param host URL 中的主机地址部分
     * @param str  URL 的 path 及以后部分
     * @return URL 字符串
     * 例如:
     * <li>{@code file:ali-oss://存储桶/path}</li>
     * <li>{@code file:local://主机名/path}</li>
     */
    public @NotNull URI customSchemeUrl(String host, String str) {
        String hostValue = host == null ? "" : host.trim();
        String strValue = str == null ? "" : str.trim();
        if (!strValue.isEmpty() && !strValue.startsWith("/")) {
            strValue = "/" + strValue;
        }

        return URI.create(value + "://" + hostValue + strValue);
    }
}
